package com.chenxys.algorithm.newbie;

/**
 * <p>
 *      求 1! + 2! + 3! + ...+n!
 * </p>
 *
 * @author Chenxys
 * @version V1.0
 * @Package com.chenxys.algorithm.newbie
 * @date 12/24/23 4:27 PM
 * @Copyright ©
 */
public class Factorial {
    public static void main(String[] args) {
        System.out.println(factorial(5));
    }

    /**
     * <p>
     *     用上一个的阶乘 乘 下一个数 = 下一个数的阶乘
     * </p>
     * @param n 整数n
     * @return 从1! + ... n!的和
     */
    public static long  factorial(int n){
        long ans = 0;
        // 1表示1!
        long cur = 1;
        for (int i = 1; i <= n; i++) {
            cur = cur * i;
            ans += cur;
        }
        return ans;
    }
}
